package com.shujia.list_;

import org.junit.Test;

import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {


    @Test
    public void test1() {
        /*
        ArrayList 遍历快; 中间添加数据效率比较低, 因为涉及到了元素的移动
        LinkedList
            优点: 随机插入元素效率是很高
            缺点: 每次在查询元素的时候都需要遍历链表, 性能是很差的

        使用场景
        ArrayList: 一次性的保存所有的元素, 或者是后续在默认追加新的元素, 会经常查询指定下标的元素
        LinkedList: 不会经常性的查询元素, 会频繁的对集合里的元素进行变更, 会在中间位置添加数据
         */
        LinkedList list = new LinkedList();

        list.add("晏子春秋");
        list.add("徐霞客游记");
        list.add("战国策");
        list.add("战国策");

        Object obj = list.get(1);
        System.out.println(obj);

    }

    public static void main(String[] args) {
//        List list = new LinkedList();
        LinkedList list = new LinkedList();

        list.add("晏子春秋");
        list.add("徐霞客游记");
        list.add("战国策");
        list.add("战国策");
        System.out.println(list);


//        void addFirst(Object obj)
        list.addFirst("春秋公羊传");
        System.out.println(list);
//        void add(Object obj)
//        void addLast(Object obj)

//        Object getFirst()
        Object first = list.getFirst();
        System.out.println(first);


//        Object getLast()
        System.out.println(list.getLast());
//        Object removeFirst()
        list.removeFirst();
        System.out.println(list);

//        Object removeLast()
        list.removeLast();
        System.out.println(list);
    }


      /*
        弘明集.上下.刘立夫.魏建中.胡勇译注-
        徐霞客游记.全四册.朱惠荣.李兴和译注-
        战国策.上下.缪文远.缪伟.罗永莲译注-
        抱朴子内篇.张松辉译注-
        抱朴子外篇.上下.张松辉.张景译注-
        拾遗记.王兴芬译注-
        搜神记.马银琴译注-
        政论.昌言.孙启治译注-
        文史通义.上下.罗炳良译注-
        文心雕龙.王志彬译注-
        文选.全六册.张启成.徐达等译注-
        新书.方向东译注-
        新序.马世年译注-
        春秋公羊传.黄铭.曾亦译注-
        春秋穀梁传.徐正英.邹皓译注-
        春秋繁露.张世亮.钟肇鹏.周桂钿译注-
        晏子春秋.汤化译注-
         */
}
